import logging
import io
import os

from qwen_agent.agents import Assistant


# 步骤 1：配置您所使用的 LLM。
llm_cfg = {
    # 使用 DashScope 提供的模型服务：
    'model': 'qwen-max',
    'model_server': 'dashscope',
    'api_key': os.getenv("DASHSCOPE_API_KEY"),
    'generate_cfg': {
        'top_p': 0.8
    }
}

# 步骤 2：创建一个智能体。这里我们以 `Assistant` 智能体为例，它能够使用工具并读取文件。
system_instruction = ''
tools = []
files = ['./浦发上海浦东发展银行西安分行个金客户经理考核办法.pdf']  # 给智能体一个 PDF 文件阅读。


# 创建智能体
bot = Assistant(llm=llm_cfg,
                system_message=system_instruction,
                function_list=tools,
                files=files)

# 步骤 3：作为聊天机器人运行智能体。
messages = []  # 这里储存聊天历史。
query = "客户经理被客户投诉一次，扣多少分？"
# 将用户请求添加到聊天历史。
messages.append({'role': 'user', 'content': query})
response = []
current_index = 0

# 运行智能体
for response in bot.run(messages=messages):
    # 直接从response中获取内容并打印
    if isinstance(response, list) and len(response) > 0:
        content = response[0].get('content', '')
        # 避免重复打印内容
        if len(content) > current_index:
            current_response = content[current_index:]
            current_index = len(content)
            print(current_response, end='')
        elif 'message' in response[0]:
            # 处理包含message字段的响应
            message_content = response[0]['message'].get('content', '')
            if len(message_content) > current_index:
                current_response = message_content[current_index:]
                current_index = len(message_content)
                print(current_response, end='')

print(f"response:{response}")
# 将机器人的回应添加到聊天历史。
messages.extend(response)

# 打印最终的完整回答
if response and isinstance(response, list) and len(response) > 0:
    final_content = response[0].get('content', '')
    if not final_content and 'message' in response[0]:
        final_content = response[0]['message'].get('content', '')
    
    print(f"\n\n完整回答: {final_content}")
